\chapter{Accessibilitat en Java}

\section{Introducció}
Fins ara s’ha posat al dia al lector informant-lo de l’actualitat en matèria de
Java i d’accessibilitat.\\

En aquest capítol s'agrupen els conceptes posant exemples de quines són les
eines que hi ha actualment per tractar l’accessibilitat en Java.\\

\section{Java Access Bridge}
El \emph{Java Access Bridge} \footnote{Java Access Bridge -
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136191.html} és una llibreria de software que permet a la màquina virtual Java disposar de les tecnologies assistives que ofereixi el sistema
operatiu. Aquesta llibreria per tant no és multiplataforma. Això porta un seguit
d’inconvenients:\\

\begin{itemize}
  \item Hetereogeneïtat en quant a funcionalitats i suport
  \item Suposa un pas extra a l’hora d'instal·lar software: no n’hi ha prou amb
  que sigui compatible amb el sistema, si no està instal·lada no podrem gaudir
  de les seves funcionalitats
\end{itemize}
 
Gràcies a aquesta llibreria programes com JAWS (Job Access With
Speech\footnote{JAWS - http://www.freedomscientific.com/jaws-hq.asp}) poden
obtindre la informació necessària per complir les seves tasques. També ens permet
utilitzar aplicacions Java amb teclats braille, etc (sempre que la aplicació sigui compatible).

\section{JAAPI}
La \emph{Java Accessibility API}\footnote{JAAPI -
http://download.oracle.com/javase/6/docs/technotes/guides/access/index.html} és
la peça de software que proporciona informació sobre la interfície d’usuari al
Java Access Bridge. Aquesta informació s’obté o bé implementant aquesta API als
nostres elements de la interfície d’usuari o bé utilitzant elements de
la interfície d’usuari que ja la tingui implementada, com és el cas de qualsevol
element de la llibreria gràfica Swing\footnote{JAAPI - http://en.wikipedia.org/wiki/Swing\_(Java)}. La JAAPI proporciona doncs a cada element de la interfície un context d’accessibilitat que pot ser llegit per les
tecnologies assistives que així ho requereixin mitjançant el Java Access Bridge. Cal destacar que aquest context
d’accessibilitat pot ser modificat per l’aplicació programàticament per tal
d’alimentar a les tecnologies assistives amb informació més acurada. En la
figura 5.1 es pot veure a nivell gràfic l'arquitectura de la JAAPI.\\

\begin{figure}[H]
\centering
\includegraphics[width=0.5\textwidth]{imatges/javaAccessBridge.png}
\caption{Els diferents mòduls que fan possible l’accessibilitat a Java}
\end{figure}

\subsection{Guia d’accessibilitat IBM}
Fa anys que IBM va desenvolupar (i encara manté i va actualitzant) una guia
d’accessibilitat per a desenvolupadors Java. Aquest conjunt de pautes és molt
complet i es pot trobar a la següent direcció web:\\
{\tt http://www-03.ibm.com/able/guidelines/java/snsjavag.html}\\

Cal destacar la visió d’IBM quant a l’accessibilitat. Literalment de
l’introducció de la guia podem llegir:\\

{\tt Els desenvolupadors d’aplicacions haurien de tindre en compte les
necesitats especials dels usuaris discapacitats quan desenvolupen software en Java. Cobrir les necesitats d’aquests usuaris serà
positiu per a tots els usuaris, incloent aquells que utilitzen dispositius
comuns.}\\

La guia ofereix un seguit de pautes generals necessàries per aconseguir una
aplicació usable per a usuaris discapacitats. Aquestes pautes es centren
sobretot en la forma en que l’usuari pot moure’s entre les diferents accions que
proporciona l’aplicació, com pot ser el suport d’una navegació per teclat
senzilla i intuïtiva, utilitzar tècniques mnemòniques, dreceres de teclat, l’ús
correcte de la presa de control, o \emph{focus}, als elements de la
interfície\ldots\\

A més de les pautes genèriques la guia també proporciona una segona part,
centrada en l’ús de Java Swing per millorar la accessibilitat de l’aplicació,
tot explicant com és i com utilitzar la API d’accessibilitat implementada a
Swing. Aquesta part també inclou un subapartat on explica de forma detallada com
crear elements d’interfície propis accessibles, mitjançant l’ús de la API JAAPI.
